﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AdminCondominio.Persistencia;
using AdminCondominio.Dominio;

namespace AdminCondominio.Negocio
{
    public class ResidenteService
    {
        public ResidenteDAO ResidenteDAO { get; set; }


        public Residente CrearResidente(Residente residenteCrear)
        {
            Residente residente = ResidenteDAO.obtener(residenteCrear.NuDocumento);
            if (residente != null)
            {
                throw new Exception("Nro Documento Existente");
            }
           
                Residente residenteCorreo = ResidenteDAO.ObtenerResidenteConCorreoRepetido(residenteCrear.NuDocumento, residenteCrear.NoCorreo);
                if (residenteCorreo != null)
                    throw new Exception("Correo existente");
                 Residente  residenteACrear = new Residente();
                    residenteACrear.NuDocumento = residenteCrear.NuDocumento;
                    residenteACrear.NoResidente = residenteCrear.NoResidente;
                    residenteACrear.FeNacimiento = residenteCrear.FeNacimiento;
                    residenteACrear.NoCorreo = residenteCrear.NoCorreo;
                    residenteACrear.TxClave = residenteCrear.TxClave;
               
            return ResidenteDAO.crear(residenteACrear);
        }

        //public Residente CrearResidente(String NuDocumento,String NoResidente,DateTime FeNacimiento,String NoCorreo,String TxClave)
        //{
        //    Residente residente = ResidenteDAO.obtener(NuDocumento);
        //    if (residente != null)
        //        throw new Exception("Residente Existente");
        //    Residente residenteCorreo = ResidenteDAO.ObtenerResidenteConCorreoRepetido(NuDocumento,NoCorreo);
        //    if (residenteCorreo != null)
        //        throw new Exception("Correo existente");
        //    Residente residenteACrear= new Residente();
        //    residenteACrear.NuDocumento = NuDocumento;
        //    residenteACrear.NoResidente = NoResidente;
        //    residenteACrear.FeNacimiento = FeNacimiento;
        //    residenteACrear.NoCorreo = NoCorreo;
        //    residenteACrear.TxClave = TxClave;
        //    return ResidenteDAO.crear(residenteACrear);
        //}


        public Residente ModificarResidente(Residente residenteAModificar)
        {
            Residente residente = ResidenteDAO.obtenerResidenteConDocumentoRepetido(residenteAModificar.CoResidente,residenteAModificar.NuDocumento);
            if (residente != null)
                throw new Exception("Nro Documento existente");
            Residente residenteCorreo = ResidenteDAO.ObtenerResidenteConCorreoRepetidoXCodigo(residenteAModificar.CoResidente, residenteAModificar.NoCorreo);
            if (residenteCorreo != null)
                throw new Exception("Correo existente");
            Residente residenteModificar = new Residente();
            residenteModificar.CoResidente = residenteAModificar.CoResidente;
            residenteModificar.NuDocumento = residenteAModificar.NuDocumento;
            residenteModificar.NoResidente = residenteAModificar.NoResidente;
            residenteModificar.FeNacimiento = residenteAModificar.FeNacimiento;
            residenteModificar.NoCorreo = residenteAModificar.NoCorreo;
            residenteModificar.TxClave = residenteAModificar.TxClave;
            return ResidenteDAO.modificar(residenteModificar);
        }
        public Residente ObtenerResidente(String NuDocumento) 
        {
            return ResidenteDAO.obtener(NuDocumento);
        }
        public Residente ObtenerResidenteXCodigo(int CoResidente) 
        {
            return ResidenteDAO.obtenerX_Codigo(CoResidente);
        }
        public ICollection<Residente> ListarResidentes(String NoResidente)
        {
           
            return ResidenteDAO.ListarResidente(NoResidente);
        }
        public void EliminarResidente(Residente residenteEliminar) 
        {
            Residente residente = ResidenteDAO.obtenerX_Codigo(residenteEliminar.CoResidente);
            if (residente == null)
                throw new Exception("Residente no existe");
             ResidenteDAO.eliminar(residenteEliminar);
        }
    }
}